An In Circuit Emulator (ICE) is a class of device that may be connected to a computer system either in place of a socketed device or via a communication port (e.g., Joint Test Action Group (JTAG) port) which allows a knowledgeable person to send commands to the processor and other devices. These commands may start and stop operations as well as gain access to registers and data stored in memory. ICE units may reset the processor, start and stop program execution, display and modify processor registers, download code, etc. Because of the power of these devices, they may be connected to a system and a knowledgeable person may gain access to sensitive information transparent to the operation of an application program. ICE devices may also monitor bus activity of the processor and store information triggered by logic signals within the system.
One of the major points of contention in creating a trusted computing environment using modern personal computers (PCs) is that all the code may be defeated by using an ICE unit. The ICE unit may be used to gain access to a system transparent to the software operating on the PC. This may allow a knowledgeable person to gain access to secrets and bypass security measures. Measures could be employed that prevent an ICE unit from ever being used in conjunction with a PC. However, this would defeat the need for such systems in the manufacturing environment or in debugging difficult application problems.
Therefore, there is a need for a method and apparatus that would prevent the use of an ICE device when a secure environment was necessary and to enable the use of an ICE device in a manufacturing or non-secure environment.